package com.poems.util;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 检测七言绝句/律诗首句格式
 * @author hqz
 *
 */
public class DetectSevenCharacterQuatrain {

	public int detect(String[] poemsFormat){
		
		//五绝仄起首句不押韵（基本型）
		List<String> sevenBase = new ArrayList<>();
		//1
		sevenBase.add("v");
		sevenBase.add("平");
		sevenBase.add("v");
		sevenBase.add("仄");
		sevenBase.add("v");
		sevenBase.add("平");
		sevenBase.add("仄");
		
		//五绝平起首句押韵（第二句起）
		List<String> sevenSecond = new ArrayList<>();
		//2
				sevenSecond.add("v");
				sevenSecond.add("仄");
				sevenSecond.add("平");
				sevenSecond.add("平");
				sevenSecond.add("v");
				sevenSecond.add("仄");
				sevenSecond.add("平");
		
		//五绝平起首句不押韵（第三句起）
		List<String> sevenThird = new ArrayList<>();
		//3
		sevenThird.add("v");
		sevenThird.add("仄");
		sevenThird.add("v");
		sevenThird.add("平");
		sevenThird.add("v");
		sevenThird.add("仄");
		sevenThird.add("仄");
		
		//五绝仄起首句押韵（第四句起）
		List<String> sevenFour = new ArrayList<>();
		//4
		sevenFour.add("v");
		sevenFour.add("平");
		sevenFour.add("v");
		sevenFour.add("仄");
		sevenFour.add("仄");
		sevenFour.add("平");
		sevenFour.add("平");
		
		int j1 = 0;
		for (int i = 0 ; i<5 ; i++) {
			if(sevenBase.get(i) == "v"){
				j1++;
			}else{
				if(poemsFormat[i+1] == "v"){
					j1++;
				}else{
					if(poemsFormat[i+1] == sevenBase.get(i)){
						j1++;
					}else{
						continue;
					}
				}
			}
		}
		
		
		int j2 = 0;
		for (int i = 0 ; i<5 ; i++) {
			if(sevenSecond.get(i) == "v"){
				j2++;
			}else{
				if(poemsFormat[i+1] == "v"){
					j2++;
				}else{
					if(poemsFormat[i+1] == sevenSecond.get(i)){
						j2++;
					}else{
						continue;
					}
				}
			}
		}
		
		
		int j3 = 0;
		for (int i = 0 ; i<5 ; i++) {
			if(sevenThird.get(i) == "v"){
				j3++;
			}else{
				if(poemsFormat[i+1] == "v"){
					j3++;
				}else{
					if(poemsFormat[i+1] == sevenThird.get(i)){
						j3++;
					}else{
						continue;
					}
				}
			}
		}
		
		
		int j4 = 0;
		for (int i = 0 ; i<5 ; i++) {
			if(sevenFour.get(i) == "v"){
				j4++;
			}else{
				if(poemsFormat[i+1] == "v"){
					j4++;
				}else{
					if(poemsFormat[i+1] == sevenFour.get(i)){
						j4++;
					}else{
						continue;
					}
				}
			}
		}

		BigDecimal k1 = new BigDecimal(j1/20.0);
		BigDecimal k2 = new BigDecimal(j2/20.0);
		BigDecimal k3 = new BigDecimal(j3/20.0);
		BigDecimal k4 = new BigDecimal(j4/20.0);

		
		if(k1.compareTo(k2)>0){
			if(k3.compareTo(k4)>0){
				if(k1.compareTo(k3)>0){
					return 1;
				}else{
					return 3;
				}
			}else{
				if(k1.compareTo(k4)>0){
					return 1;
				}else{
					return 4;
				}
			}
		}else{
			if(k3.compareTo(k4)>0){
				if(k2.compareTo(k3)>0){
					return 2;
				}else{
					return 3;
				}
			}else{
				if(k2.compareTo(k4)>0){
					return 2;
				}else{
					return 4;
				}
			}
		}
		
	}
	
}
